Problem
善意的投票
题目描述
幼儿园里有个小朋友打算通过投票来决定睡不睡午觉。对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神。
虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来意愿相反的票。我们定义一次投票的冲突数为好朋友之间发生冲突的总数加上和所有和自己本来意愿发生冲突的人数。
我们的问题就是,每位小朋友应该怎样投票,才能使冲突数最小?
输入输出格式
输入格式
文件的第一行只有两个整数,,保证有,。
其中代表总人数,代表好朋友的对数。文件第二行有个整数,第个整数代表第个小朋友的意愿,当它为时表示同意睡觉,当它为时表示反对睡觉。接下来文件还有行,每行有两个整数,。表示,是一对好朋友,我们保证任何两对,不会重复。
输出格式
只需要输出一个整数,即可能的最小冲突数。
输入输出样例
输入样例
1 | 3 3 |
输出样例
1 | 1 |
说明
,。
标签:网络流
最小割
Solution
最小割建图如下:
如果本人意见为,则与源点相连,反之与汇点相连。
对于每对朋友关系,互相连边。
所有边的容量均为,跑最大流最小割即可。
原理:对于每个人,如果有朋友与他意见不合,则他要么割自己到源点(汇点)的一条边,要么割与朋友的边,代价等于容量。
Code
1 |
|